#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // 1.开启定时器事
    // 此处timerId 是一个定时器的身份标识.
    timerId = this->startTimer(1000);

    //初始化定时器
    ui->lcdNumber->display(10);
}

MainWindow::~MainWindow()
{
    delete ui;
}

//之前学习过的QTimer也实现了定时器功能
//在QTimer背后是QTimerEvent定时器事件进行支撑的
void MainWindow::timerEvent(QTimerEvent *event)
{
    //如果一个程序中存在多个定时器（startTimer 创建的定时器），此时每个定时器都会触发timerEvent函数
    //先判定一下这次触发是否是想要的定时器触发的
    //此处timerld 类似于Linux上谈到的"文件描述符",有一个身份标识效果
    //使用timerEvent比QTimer还是要更复杂一点.手动管理timerld,还需要区分这次函数调用是哪个timer引起的
    if (event->timerId() == timerId) {
        //是咱们自己搞的定时器
        int value = ui->lcdNumber->intValue();
        if (value <= 0) {
            //停止定时器
            this->killTimer(this->timerId);
            return;
        }

        --value;
        ui->lcdNumber->display(value);
    }
}

